package com.blog.cmrpersonalblog.dto.homepage;

import lombok.Data;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 用户端首页响应DTO
 */
@Data
public class HomePageResponse {

    /**
     * 分类列表（左侧）
     */
    private List<CategoryInfo> categories;

    /**
     * 文章列表（中间）
     */
    private ArticleListData articles;

    /**
     * 分类信息
     */
    @Data
    public static class CategoryInfo {
        /**
         * 分类ID
         */
        private Long id;

        /**
         * 分类名称
         */
        private String name;

        /**
         * 分类图标
         */
        private String icon;

        /**
         * 文章数量
         */
        private Long articleCount;

        /**
         * 是否为热门分类
         */
        private Boolean isHot;
    }

    /**
     * 文章列表数据
     */
    @Data
    public static class ArticleListData {
        /**
         * 文章列表
         */
        private List<ArticleInfo> records;

        /**
         * 总记录数
         */
        private Long total;

        /**
         * 当前页码
         */
        private Long current;

        /**
         * 每页大小
         */
        private Long size;

        /**
         * 总页数
         */
        private Long pages;

        /**
         * 是否有下一页
         */
        private Boolean hasNext;
    }

    /**
     * 文章信息
     */
    @Data
    public static class ArticleInfo {
        /**
         * 文章ID
         */
        private Long id;

        /**
         * 文章标题
         */
        private String title;

        /**
         * 文章摘要
         */
        private String summary;

        /**
         * 封面图片
         */
        private String coverImage;

        /**
         * 作者ID
         */
        private Long authorId;

        /**
         * 作者用户名
         */
        private String authorName;

        /**
         * 作者昵称
         */
        private String authorNickName;

        /**
         * 作者头像
         */
        private String authorAvatar;

        /**
         * 分类ID
         */
        private Long categoryId;

        /**
         * 分类名称
         */
        private String categoryName;

        /**
         * 标签列表
         */
        private List<TagInfo> tags;

        /**
         * 浏览量
         */
        private Integer viewCount;

        /**
         * 点赞数
         */
        private Integer likeCount;

        /**
         * 评论数
         */
        private Integer commentCount;

        /**
         * 收藏数
         */
        private Integer collectCount;

        /**
         * 是否置顶
         */
        private Boolean isTop;

        /**
         * 是否原创
         */
        private Boolean isOriginal;

        /**
         * 发布时间
         */
        private LocalDateTime publishTime;

        /**
         * 预估阅读时长（分钟）
         */
        private Integer readingTime;
        /**
         * 是否已收藏
         */
        private Boolean isCollected;
        /**
         * 是否已点赞
         */
        private Boolean isLiked;
    }



    /**
     * 标签信息
     */
    @Data
    public static class TagInfo {
        private Long id;
        private String name;
        private String color;
        private String description;
        private String icon;
        private Integer useCount;
    }
}
